package com.wxmit.module.system.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.FieldNameConstants;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Description SysMenu
 * @Author huangxiong
 * @Date 2022/7/12 10:09
 * @Version V1.0
 */
@Data
@TableName("sys_menu")
@FieldNameConstants
public class SysMenu  implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 菜单ID */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 菜单名称 */
    private String name;


    /** 父菜单ID */
    private Long parentId;

    /** 显示顺序 */
    private Integer weight;

    /** 路由地址 */
    private String path;

    /** 组件路径 */
    private String menuKey;

    /** 是否为外链（0是 1否） */
    private String iframe;

    /** 类型 @link com.wxmit.module.system.enums.SysMenuTypeEnum */
    private String type;

    /** 显示状态（0隐藏 1显示） */
    private String hide;

    /** 菜单状态（0正常 1禁用） */
    private String status;

    /** 权限字符串 */
    private String permission;

    /** 菜单图标 */
    private String icon;

    private String remark;

    /** 缓存页面 @link com.wxmit.module.system.enums.SysMenuTypeEnum */
    private String keepAlive;

    private String href;

    /***
     *  是否添加水印 （1无 0有）
     */
    private String watermark;

    /** 子菜单 */
    @TableField(exist = false)
    private List<SysMenu> children = new ArrayList<SysMenu>();



    /** 创建者 */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 更新者 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}
